home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / phpMyAdmin / queryframe.php < prev    next >
PHP Script  |  2005-02-17  |  18KB  |  440 lines

  1. <?php
  2. /* $Id: queryframe.php,v 2.21 2005/02/17 17:43:57 lem9 Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. /**
  6.  * Gets the variables sent to this script, retains the db name that may have
  7.  * been defined as startup option and include a core library
  8.  */
  9. require_once('./libraries/grab_globals.lib.php');
  10. if (!empty($db)) {
  11.     $db_start = $db;
  12. }
  13.  
  14.  
  15. /**
  16.  * Gets a core script and starts output buffering work
  17.  */
  18. require_once('./libraries/common.lib.php');
  19. require_once('./libraries/bookmark.lib.php');
  20. require_once('./libraries/ob.lib.php');
  21. if ($cfg['OBGzip']) {
  22.     $ob_mode = PMA_outBufferModeGet();
  23.     if ($ob_mode) {
  24.         PMA_outBufferPre($ob_mode);
  25.     }
  26. }
  27.  
  28. // garvin: For re-usability, moved http-headers
  29. // to a seperate file. It can now be included by header.inc.php,
  30. // queryframe.php, querywindow.php.
  31.  
  32. require_once('./libraries/header_http.inc.php');
  33.  
  34. /**
  35.  * Displays the frame
  36.  */
  37. // Gets the font sizes to use
  38. PMA_setFontSizes();
  39.  
  40. /**
  41.  * Relations
  42.  */
  43. require_once('./libraries/relation.lib.php');
  44. $cfgRelation = PMA_getRelationsParam();
  45. echo "<?xml version=\"1.0\" encoding=\"" . $GLOBALS['charset'] . "\"?".">"; // remove vertical scroll bar bug in ie
  46. ?>
  47. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  48.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  49. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $available_languages[$lang][2]; ?>" lang="<?php echo $available_languages[$lang][2]; ?>" dir="<?php echo $text_dir; ?>">
  50.  
  51. <head>
  52. <title>phpMyAdmin</title>
  53. <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset; ?>" />
  54. <base<?php if (!empty($cfg['PmaAbsoluteUri'])) echo ' href="' . $cfg['PmaAbsoluteUri'] . '"'; ?> />
  55. <link rel="stylesheet" type="text/css" href="./css/phpmyadmin.css.php?lang=<?php echo $lang; ?>&js_frame=left&num_dbs=0" />
  56. <?php
  57. if ($cfg['QueryFrame'] && $cfg['QueryFrameJS']) {
  58. ?>
  59. <script type="text/javascript" language="javascript">
  60. <!--
  61. var querywindow = '';
  62.  
  63. function open_querywindow(url) {
  64.  
  65.     if (!querywindow.closed && querywindow.location) {
  66.         querywindow.focus();
  67.     } else {
  68.         querywindow=window.open(url + '&db=' + document.queryframeform.db.value + '&table=' + document.queryframeform.table.value, '','toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=yes,resizable=yes,width=<?php echo $cfg['QueryWindowWidth']; ?>,height=<?php echo $cfg['QueryWindowHeight']; ?>');
  69.     }
  70.  
  71.     if (!querywindow.opener) {
  72.         querywindow.opener = self;
  73.     }
  74.  
  75.     if (window.focus) {
  76.         querywindow.focus();
  77.     }
  78.  
  79.     return false;
  80. }
  81.  
  82. /**
  83.   * function resizeRowsLeft()
  84.   * added 2004-07-20 by Michael Keck <mail@michaelkeck.de>
  85.   *                  - this function checks the complete frameset of
  86.   *                    index.php (parent.frames)
  87.   *                  - gets the offsetHeight of qfcontainer
  88.   *                  - sets a new frameset.rows - definition for the
  89.   *                    frameset 'leftFrameset' in 'index.php' dynamic.
  90.   * this script was tested on
  91.   *   IE 6, Opera 7.53, Netsacpe 7.1 and Firefox 0.9
  92.   *   and should work on all other DOM-Browsers and old IE-Browsers.
  93.   *   It will never work on Netscape smaller Version 6 and IE smaller Version 4.
  94.   * Please give me feedback if any browser doesn't work with this script
  95.   *   mailto:mail@michaelkeck.de?subject=resizeFrames - Browser: [the browser]
  96. **/
  97.  
  98. function resizeRowsLeft() {
  99.     if (document.getElementById('qfcontainer')) { // dom browsers
  100.         // get the height of the div-element 'qfcontainer'
  101.         // we must add 10 (px) for framespacing
  102.         newHeight = document.getElementById('qfcontainer').offsetHeight+10;
  103.         // check if the frameset exists
  104.         // please see index.php and check the frameset-definitions
  105.         if (parent.document.getElementById('mainFrameset') && parent.document.getElementById('leftFrameset')) {
  106.             parent.document.getElementById('leftFrameset').rows=newHeight+',*';
  107.         }
  108.     } else {
  109.         if (document.all) { // older ie-browsers
  110.             // get the height of the div-element 'qfcontainer'
  111.             // we must add 10 (px) for framespacing
  112.             newHeight=document.all('qfcontainer').offsetHeight+10;
  113.             // check if the frameset exists
  114.             // please see index.php and check the frameset-definitions
  115.             if (parent.leftFrameset) {
  116.                 parent.leftFrameset.rows=newHeight+',*';
  117.             }
  118.         }
  119.     }
  120. }
  121.  
  122. //-->
  123. </script>
  124. <?php
  125.     // setup the onload handler for resizing frames
  126.     $js_frame_onload=' onload="resizeRowsLeft();"';
  127. }
  128. if ($cfg['QueryFrame']) {
  129. ?>
  130. <script type="text/javascript" language="javascript">
  131. <!--
  132. // added 2004-09-16 by Michael Keck (mkkeck)
  133. //                  bug: #1027321
  134. //                       drop-down databases list keep focus on database change
  135. // modified 2004-11-06: bug #1046434 (Light mode does not work)
  136. var focus_removed = false;
  137. function remove_focus_select() {
  138.     focus_removed = false;
  139.     set_focus_to_nav();
  140. }
  141. function set_focus_to_nav() {
  142.     if (typeof(parent.frames.nav)!='undefined' && focus_removed!=true) {
  143.         parent.frames.nav.focus();
  144.         focus_removed=true;
  145.     } else {
  146.         focus_removed=false;
  147.         setTimeout("set_focus_to_nav();",500);
  148.     }
  149. }
  150. //-->
  151. </script>
  152. <?php
  153. }
  154. ?>
  155. </head>
  156.  
  157. <body id="body_queryFrame" bgcolor="<?php echo $cfg['LeftBgColor']; ?>"<?php echo ((isset($js_frame_onload) && $js_frame_onload!='') ? $js_frame_onload : ''); ?>>
  158.     <div id="qfcontainer">
  159. <?php
  160. if ($cfg['LeftDisplayLogo']) {
  161. ?>
  162. <!-- phpMyAdmin logo -->
  163.     <?php
  164.     if (@file_exists($pmaThemeImage . 'logo_left.png')) {
  165.     ?>
  166.  
  167.     <div align="center">
  168.         <a href="http://www.phpmyadmin.net" target="_blank"><img src="<?php echo '' . $pmaThemeImage . 'logo_left.png'; ?>" alt="phpMyAdmin" vspace="3" border="0" /></a>
  169.     </div>
  170.     <?php
  171.     } else {
  172.         echo '    '
  173.            . '<div align="center"><a href="http://www.phpmyadmin.net" target="_blank">'
  174.            . '<img src="' . $GLOBALS['pmaThemeImage'] . 'pma_logo2.png'  .'" alt="phpMyAdmin" border="0" />'
  175.            . '</a></div>' . "\n";
  176.     }
  177.     echo '<hr id="hr_first" />';
  178. } // end of display logo
  179.  
  180. if ($cfg['MainPageIconic']) {
  181.     $str_spacer_links='';
  182. } else{
  183.     $str_spacer_links=' - ';
  184. }
  185.     ?>
  186. <!-- Link to the welcome page -->
  187.     <div align="center">
  188. <?php
  189.     echo '<a class="item" href="main.php?' . PMA_generate_common_url() . '" target="phpmain' . $hash . '">'
  190.        . ($cfg['MainPageIconic']
  191.             ? '<img src="' . $pmaThemeImage . 'b_home.png" width="16" height="16" border="0" hspace="2" alt="' . $strHome . '" title="' . $strHome . '"'
  192.                     .' onmouseover="this.style.backgroundColor=\'#ffffff\';" onmouseout="this.style.backgroundColor=\'\';" align="middle" />'
  193.             : '<b>' . $strHome . '</b>')
  194.         . '</a>';
  195.     // if we have chosen server
  196.     if ($server != 0) {
  197.         // Logout for advanced authentication
  198.         if ($cfg['Server']['auth_type'] != 'config') {
  199.             echo $str_spacer_links;
  200.             echo '<a class="item" href="index.php?' . PMA_generate_common_url() . '&old_usr=' . urlencode($PHP_AUTH_USER) . '" target="_parent">'
  201.                . ($cfg['MainPageIconic']
  202.                     ? '<img src="' . $pmaThemeImage . 's_loggoff.png" width="16" height="16" border="0" hspace="2" alt="' . $strLogout . '" title="' . $strLogout . '"'
  203.                             .' onmouseover="this.style.backgroundColor=\'#ffffff\';" onmouseout="this.style.backgroundColor=\'\';" align="middle" />'
  204.                     : '<b>' . $strLogout . '</b>')
  205.                . '</a>';
  206.         } // end if
  207.  
  208.         $anchor = 'querywindow.php?' . PMA_generate_common_url('', '');
  209.         if ($cfg['QueryFrameJS']) {
  210.             $href = $anchor;
  211.             $target = '';
  212.             $onclick = 'onclick="javascript:open_querywindow(this.href); return false;"';
  213.         } else {
  214.             $href = $anchor;
  215.             $target = 'target="phpmain' . $hash . '"';
  216.             $onclick = '';
  217.         }
  218.         if ($cfg['MainPageIconic']) {
  219.             $query_frame_link_text = '<img src="' . $pmaThemeImage . 'b_selboard.png" border="0" hspace="1" width="16" height="16" alt="' . $strQueryFrame . '" title="' . $strQueryFrame . '"'
  220.                                    .' onmouseover="this.style.backgroundColor=\'#ffffff\';" onmouseout="this.style.backgroundColor=\'\';" align="middle" />';
  221.         } else {
  222.             echo ($str_spacer_links != '' ? '<br />' : '');
  223.             $query_frame_link_text = '<b>' . $strQueryFrame . '</b>';
  224.         }
  225.     ?>
  226.     <script type="text/javascript">
  227.     <!--
  228.     document.writeln('<a href="<?php echo $href; ?>" <?php echo $target . ' ' . $onclick; ?> class="item"><?php echo addslashes($query_frame_link_text); ?><\/a>');
  229.     //-->
  230.     </script>
  231.     <noscript>
  232.         <a href="<?php echo $href; ?>&no_js=true" <?php echo $target . ' ' . $onclick; ?> target="phpmain<?php echo $hash; ?>" class="item"><?php echo $query_frame_link_text; ?></a>
  233.     </noscript>
  234.     <?php
  235.     }
  236.  
  237. if ($cfg['MainPageIconic']) {
  238.     echo '<img src="' .$GLOBALS['pmaThemeImage'] . 'spacer.png'  .'" width="2" height="1" border="0" alt="" />'
  239.        . '<a href="Documentation.html" target="documentation" class="item">'
  240.        . '<img src="' . $pmaThemeImage . 'b_docs.png" border="0" hspace="1" width="16" height="16" alt="' . $strPmaDocumentation . '" title="' . $strPmaDocumentation . '"'
  241.        . ' onmouseover="this.style.backgroundColor=\'#ffffff\';" onmouseout="this.style.backgroundColor=\'\';" align="middle" />'
  242.        . '</a>';
  243.     echo ''
  244.        . '<a href="' . $cfg['MySQLManualBase'] . '" target="documentation" class="item">'
  245.        . '<img src="' . $pmaThemeImage . 'b_sqlhelp.png" border="0" hspace="1" width="16" height="16" alt="MySQL - ' . $strDocu . '" title="MySQL - ' . $strDocu . '"'
  246.        .' onmouseover="this.style.backgroundColor=\'#ffffff\';" onmouseout="this.style.backgroundColor=\'\';" align="middle" />'
  247.        . '</a>';
  248. }
  249.  
  250.     ?>
  251.     </div>
  252.     <hr id="hr_second" />
  253.  
  254.     <?php
  255. if ($cfg['LeftDisplayServers']){
  256.     $show_server_left = TRUE;
  257.     include('./libraries/select_server.lib.php');
  258. } // end if LeftDisplayServers
  259.     ?>
  260. <!-- Databases list -->
  261.     <?php
  262. /**
  263.  * Get the list and number of available databases.
  264.  * Skipped if no server selected: in this case no database should be displayed
  265.  * before the user choose among available ones at the welcome screen.
  266.  */
  267. if ($server > 0) {
  268.     PMA_availableDatabases(); // this function is defined in "common.lib.php"
  269. } else {
  270.     $num_dbs = 0;
  271. }
  272.  
  273. // Don't display expansible/collapsible database info if:
  274. // 1. $server == 0 (no server selected)
  275. //    This is the case when there are multiple servers and
  276. //    '$cfg['ServerDefault'] = 0' is set. In that case, we want the welcome
  277. //    screen to appear with no database info displayed.
  278. // 2. there is only one database available (ie either only one database exists
  279. //    or $cfg['Servers']['only_db'] is defined and is not an array)
  280. //    In this case, the database should not be collapsible/expandable
  281. if ($num_dbs > 1) {
  282.     // Light mode -> beginning of the select combo for databases
  283.     // Note: When javascript is active, the frameset will be changed from
  284.     // within left.php. With no JS (<noscript>) the whole frameset will
  285.     // be rebuilt with the new target frame.
  286.     if ($cfg['LeftFrameLight']) {
  287.     ?>
  288.     <table border="0" cellpadding="1" cellspacing="0">
  289.         <tr>
  290.             <td align="left" class="heada"><?php echo $strDatabase; ?>:</td>
  291.         </tr>
  292.         <tr>
  293.             <td nowrap="nowrap">
  294.     <form method="post" action="index.php" name="left" target="_parent" style="margin: 0px; padding: 0px;">
  295.     <script type="text/javascript" language="javascript">
  296.     <!--
  297.         document.left.action="left.php";
  298.         document.left.target="nav";
  299.     //-->
  300.     </script>
  301.     <?php
  302.         echo PMA_generate_common_hidden_inputs();
  303.         echo '        <input type="hidden" name="hash" value="' . $hash . '" />' . "\n";
  304.         ?>
  305.         <select name="lightm_db" onchange="remove_focus_select();this.form.submit();">
  306.         <?php
  307.         echo '            <option value="">(' . $strDatabases . ') ...</option>' . "\n";
  308.         $table_list = '';
  309.         $table_list_header = '';
  310.         $db_name    = '';
  311.         $selected_db = 0;
  312.  
  313.         // natural order for db list
  314.         if ($cfg['NaturalOrder'] && $num_dbs > 0) {
  315.             $dblist_temp = $dblist;
  316.             natsort($dblist_temp);
  317.             $i = 0;
  318.             foreach ($dblist_temp as $each) {
  319.                 $dblist[$i] = $each;
  320.                 $i++;
  321.             }
  322.         }
  323.  
  324.         // Gets the tables list per database
  325.         for ($i = 0; $i < $num_dbs; $i++) {
  326.             $db = $dblist[$i];
  327.             $j  = $i + 2;
  328.             if (!empty($db_start) && $db == $db_start) {
  329.                 $selected_db = $j;
  330.             }
  331.             $tables              = PMA_DBI_try_query('SHOW TABLES FROM ' . PMA_backquote($db) . ';', NULL, PMA_DBI_QUERY_STORE);
  332.             $num_tables          = ($tables) ? @PMA_DBI_num_rows($tables) : 0;
  333.             $common_url_query    = PMA_generate_common_url($db);
  334.             if ($num_tables) {
  335.                 $num_tables_disp = $num_tables;
  336.             } else {
  337.                 $num_tables_disp = '-';
  338.             }
  339.             // Get additional information about tables for tooltip
  340.             if ($cfg['ShowTooltip'] && PMA_MYSQL_INT_VERSION >= 32303
  341.                 && $num_tables
  342.                 && (!$cfg['LeftFrameLight'] || $selected_db == $j)) {
  343.                 $tooltip = array();
  344.                 $tooltip_name = array();
  345.                 $result  = PMA_DBI_try_query('SHOW TABLE STATUS FROM ' . PMA_backquote($db));
  346.                 while ($tmp = PMA_DBI_fetch_assoc($result)) {
  347.                     $tooltip_name[$tmp['Name']] = (!empty($tmp['Comment']) ? $tmp['Comment'] . ' ' : '');
  348.                     $tmp['Comment'] = ($cfg['ShowTooltipAliasTB'] && $cfg['ShowTooltipAliasTB'] !== 'nested' ? $tmp['Name'] : $tmp['Comment']);
  349.                     $tooltip[$tmp['Name']] = (!empty($tmp['Comment']) ? $tmp['Comment'] . ' ' : '')
  350.                                            . '(' . (isset($tmp['Rows']) ? $tmp['Rows'] : '0') . ' ' . $strRows . ')';
  351.                 } // end while
  352.             } // end if
  353.  
  354.             // garvin: Get comments from PMA comments table
  355.             $db_tooltip = '';
  356.             if ($cfg['ShowTooltip'] && $cfgRelation['commwork']) {
  357.                 $tmp_db_tooltip = PMA_getComments($db);
  358.                 if (is_array($tmp_db_tooltip)) {
  359.                     $db_tooltip = implode(' ', $tmp_db_tooltip);
  360.                 }
  361.             }
  362.  
  363.             // Builds the databases' names list
  364.             if (!empty($db_start) && $db == $db_start) {
  365.                 $table_title = array();
  366.                 $table_array = array();
  367.                 // Gets the list of tables from the current database
  368.                 while (list($table) = PMA_DBI_fetch_row($tables)) {
  369.                     $table_array[$table] = '';
  370.                     $url_title  = (!empty($tooltip) && isset($tooltip[$table]))
  371.                                 ? htmlspecialchars($tooltip[$table])
  372.                                 : '';
  373.                     $alias = (!empty($tooltip_name) && isset($tooltip_name[$table]))
  374.                                 ? htmlspecialchars($tooltip_name[$table])
  375.                                 : '';
  376.                     $book_sql_query = PMA_queryBookmarks($db, $cfg['Bookmark'], '\'' . PMA_sqlAddslashes($table) . '\'', 'label');
  377.                 } // end while (tables list)
  378.                 $selected = ' selected="selected"';
  379.             } else {
  380.                 $selected = '';
  381.             } // end if... else...
  382.  
  383.             if (!empty($num_tables)) {
  384.                 echo '            '
  385.                    . '<option value="' . htmlspecialchars($db) . '"' . $selected . '>'
  386.                    . ($db_tooltip != '' && $cfg['ShowTooltipAliasDB'] ? htmlspecialchars($db_tooltip) : htmlspecialchars($db)) . ' (' . $num_tables . ')</option>' . "\n";
  387.             } else {
  388.                 echo '            '
  389.                    . '<option value="' . htmlspecialchars($db) . '"' . $selected . '>'
  390.                    . ($db_tooltip != '' && $cfg['ShowTooltipAliasDB'] ? htmlspecialchars($db_tooltip) : htmlspecialchars($db)) . ' (-)</option>' . "\n";
  391.             } // end if... else...
  392.  
  393.         } // end for $i (db list)
  394.         ?>
  395.         </select>
  396.         <noscript>
  397.             <input type="submit" name="Go" value="<?php echo $strGo; ?>" />
  398.         </noscript>
  399.         </form>
  400.             </td>
  401.         </tr>
  402.     </table>
  403.     <hr id="hr_third" />
  404.     <?php
  405.     } // end if LeftFrameLight
  406. } // end if num_db > 1
  407.     ?>
  408.     <form name="queryframeform" action="queryframe.php" method="get" style="margin:0px; padding:0px; display:none;">
  409.         <input type="hidden" name="db" value="" />
  410.         <input type="hidden" name="table" value="" />
  411.         <input type="hidden" name="framename" value="queryframe" />
  412.     </form>
  413.     <form name="hashform" action="queryframe.php" style="margin:0px; padding:0px; display:none;">
  414.         <input type="hidden" name="hash" value="<?php echo $hash; ?>" />
  415.     </form>
  416.     </div>
  417. </body>
  418. </html>
  419.  
  420. <?php
  421. /**
  422.  * Close MySql connections
  423.  */
  424. if (isset($dbh) && $dbh) {
  425.     @PMA_DBI_close($dbh);
  426. }
  427. if (isset($userlink) && $userlink) {
  428.     @PMA_DBI_close($userlink);
  429. }
  430.  
  431.  
  432. /**
  433.  * Sends bufferized data
  434.  */
  435. if (isset($cfg['OBGzip']) && $cfg['OBGzip']
  436.     && isset($ob_mode) && $ob_mode) {
  437.      PMA_outBufferPost($ob_mode);
  438. }
  439. ?>
  440.